﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using Kaesoft.Hospedaje.Business;
using System.ServiceModel.Activation;
using Kaesoft.Hospedaje.Entities;

namespace Kaesoft.Hospedaje.Services
{
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class ServicioAdministracion : IServicioAdministracion
    {
        public Usuario ValidarCredenciales(string login, string pass)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ValidarCredenciales(login, pass);
        }

        public List<Perfil> ObtenerPerfiles()
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ObtenerPerfiles();
        }

        public PaginatedList<Usuario> ObtenerUsuariosPorCriterios(int tipoConsulta, string criterio, int indice)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ObtenerUsuariosPorCriterios(tipoConsulta, criterio, indice);
        }

        public void GrabarUsuarios(List<Usuario> usuarios)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            business.GrabarUsuarios(usuarios);
        }

        public List<Perfil> ListarArbolPerfiles()
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ListarArbolPerfiles();
        }

        public List<Opcion> ListarArbolOpciones()
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ListarArbolOpciones();
        }

        public List<Opcion> ListarArbolOpcionesPorId(Guid idOpcion)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ListarArbolOpcionesPorId(idOpcion);
        }

        public List<Operacion> ListarOperaciones()
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ListarOperaciones();
        }

        public Perfil ObtenerPerfilPorId(Guid idPerfil)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ObtenerPerfilPorId(idPerfil);
        }

        public List<Operacion> ObtenerOperacionPorPerfilYOpcion(Guid idPerfil, Guid idOpcion)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ObtenerOperacionPorPerfilYOpcion(idPerfil, idOpcion);
        }

        public Perfil InsertarNuevoPerfil(Perfil nuevoPerfil)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.InsertarNuevoPerfil(nuevoPerfil);
        }

        public bool ActualizaPerfil(string perfilNombre, Guid perfilId, List<PerfilOpcion> poEliminar, List<PerfilOpcion> poAgregar, List<PerfilOpcionOperacion> pooEliminar, List<PerfilOpcionOperacion> pooAgregar)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ActualizaPerfil(perfilNombre, perfilId, poEliminar, poAgregar, pooEliminar, pooAgregar);
        }

        public bool EliminaPerfiles(List<Perfil> perfiles)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.EliminaPerfiles(perfiles);
        }

        public Perfil ObtenerPerfilPorNombre(string nombrePerfil)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ObtenerPerfilPorNombre(nombrePerfil);
        }

        public void RestaurarClave(Guid idUsuarioResetear)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            business.RestaurarClave(idUsuarioResetear);
        }

        public Dictionary<string, int> ValidaUsuario(Usuario usuarioValidar)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ValidaUsuario(usuarioValidar);
        }

        public bool GuardarPerfilOpcion(string perfilNombre, Guid perfilId, List<PerfilOpcion> poAgregar)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.GuardarPerfilOpcion(perfilNombre, perfilId, poAgregar);
        }

        public void GuardaOperacion(PerfilOpcion PropiedadPerfilOpcion)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            business.GuardaOperacion(PropiedadPerfilOpcion);
        }

        public List<Operacion> ObtenerDatosOpcionOperacion(Guid idPerfil, Guid idOpcion)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ObtenerDatosOpcionOperacion(idPerfil, idOpcion);
        }

        public PerfilOpcion ObtenerPerfilOpcion(Guid IdPerfil, Guid IdOpcion)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ObtenerPerfilOpcion(IdPerfil, IdOpcion);
        }
        public bool ActualizaPerfilF(string perfilNombre, Guid perfilId)
        {
            ReservacionBusiness business = new ReservacionBusiness();
            return business.ActualizaPerfilF(perfilNombre, perfilId);
        }
    }
}